package stdying.handyweibo.model;

import android.os.Parcel;
import android.os.Parcelable;

import com.google.gson.annotations.SerializedName;

import java.util.List;

/**
 * Description: User
 * 个人信息，由GsonFormat自动生成
 * Author: liulili
 * Created: 2015-11-23
 */
public class User implements Parcelable {

    /**
     * id : 2147497630
     * idstr : 2147497630
     * class : 1
     * screen_name : stdying
     * name : stdying
     * province : 33
     * city : 1
     * location : 浙江 杭州
     * description : 愤愤的码农。
     * url :
     * profile_image_url : http://tp3.sinaimg.cn/2147497630/50/40085961333/1
     * profile_url : u/2147497630
     * domain :
     * weihao :
     * gender : m
     * followers_count : 22
     * friends_count : 102
     * pagefriends_count : 1
     * statuses_count : 208
     * favourites_count : 5
     * created_at : Mon May 30 11:09:30 +0800 2011
     * following : false
     * allow_all_act_msg : false
     * geo_enabled : true
     * verified : false
     * verified_type : -1
     * remark :
     * status : {"created_at":"Mon Nov 16 14:51:20 +0800 2015","id":3909817858827406,"mid":"3909817858827406","idstr":"3909817858827406","text":"一个不错的vpn http://t.cn/RU8UVwH ","source_allowclick":0,"source_type":1,"source":"<a href=\"http://app.weibo.com/t/feed/cUcI1A\" rel=\"nofollow\">分享按钮<\/a>","favorited":false,"truncated":false,"in_reply_to_status_id":"","in_reply_to_user_id":"","in_reply_to_screen_name":"","pic_urls":[],"geo":null,"reposts_count":0,"comments_count":0,"attitudes_count":0,"isLongText":false,"mlevel":0,"visible":{"type":0,"list_id":0},"biz_feature":0,"darwin_tags":[],"userType":0}
     * ptype : 0
     * allow_all_comment : true
     * avatar_large : http://tp3.sinaimg.cn/2147497630/180/40085961333/1
     * avatar_hd : http://ww1.sinaimg.cn/crop.321.2.864.864.1024/8000369egw1erzcz09uhgj21400p0wn7.jpg
     * verified_reason :
     * verified_trade :
     * verified_reason_url :
     * verified_source :
     * verified_source_url :
     * follow_me : false
     * online_status : 0
     * bi_followers_count : 8
     * lang : zh-cn
     * star : 0
     * mbtype : 0
     * mbrank : 0
     * block_word : 0
     * block_app : 0
     * credit_score : 80
     * user_ability : 0
     * urank : 9
     */

    @SerializedName("id")
    private long id;
    @com.google.gson.annotations.SerializedName("idstr")
    private String idstr;
    @com.google.gson.annotations.SerializedName("class")
    private int classX;
    @com.google.gson.annotations.SerializedName("screen_name")
    private String screenName;
    @com.google.gson.annotations.SerializedName("name")
    private String name;
    @com.google.gson.annotations.SerializedName("province")
    private String province;
    @com.google.gson.annotations.SerializedName("city")
    private String city;
    @com.google.gson.annotations.SerializedName("location")
    private String location;
    @com.google.gson.annotations.SerializedName("description")
    private String description;
    @com.google.gson.annotations.SerializedName("url")
    private String url;
    @com.google.gson.annotations.SerializedName("profile_image_url")
    private String profileImageUrl;
    @com.google.gson.annotations.SerializedName("profile_url")
    private String profileUrl;
    @com.google.gson.annotations.SerializedName("domain")
    private String domain;
    @com.google.gson.annotations.SerializedName("weihao")
    private String weihao;
    @com.google.gson.annotations.SerializedName("gender")
    private String gender;
    @com.google.gson.annotations.SerializedName("followers_count")
    private int followersCount;
    @com.google.gson.annotations.SerializedName("friends_count")
    private int friendsCount;
    @com.google.gson.annotations.SerializedName("pagefriends_count")
    private int pagefriendsCount;
    @com.google.gson.annotations.SerializedName("statuses_count")
    private int statusesCount;
    @com.google.gson.annotations.SerializedName("favourites_count")
    private int favouritesCount;
    @com.google.gson.annotations.SerializedName("created_at")
    private String createdAt;
    @com.google.gson.annotations.SerializedName("following")
    private boolean following;
    @com.google.gson.annotations.SerializedName("allow_all_act_msg")
    private boolean allowAllActMsg;
    @com.google.gson.annotations.SerializedName("geo_enabled")
    private boolean geoEnabled;
    @com.google.gson.annotations.SerializedName("verified")
    private boolean verified;
    @com.google.gson.annotations.SerializedName("verified_type")
    private int verifiedType;
    @com.google.gson.annotations.SerializedName("remark")
    private String remark;
    /**
     * created_at : Mon Nov 16 14:51:20 +0800 2015
     * id : 3909817858827406
     * mid : 3909817858827406
     * idstr : 3909817858827406
     * text : 一个不错的vpn http://t.cn/RU8UVwH
     * source_allowclick : 0
     * source_type : 1
     * source : <a href="http://app.weibo.com/t/feed/cUcI1A" rel="nofollow">分享按钮</a>
     * favorited : false
     * truncated : false
     * in_reply_to_status_id :
     * in_reply_to_user_id :
     * in_reply_to_screen_name :
     * pic_urls : []
     * geo : null
     * reposts_count : 0
     * comments_count : 0
     * attitudes_count : 0
     * isLongText : false
     * mlevel : 0
     * visible : {"type":0,"list_id":0}
     * biz_feature : 0
     * darwin_tags : []
     * userType : 0
     */

    @com.google.gson.annotations.SerializedName("status")
    private StatusEntity status;
    @com.google.gson.annotations.SerializedName("ptype")
    private int ptype;
    @com.google.gson.annotations.SerializedName("allow_all_comment")
    private boolean allowAllComment;
    @com.google.gson.annotations.SerializedName("avatar_large")
    private String avatarLarge;
    @com.google.gson.annotations.SerializedName("avatar_hd")
    private String avatarHd;
    @com.google.gson.annotations.SerializedName("verified_reason")
    private String verifiedReason;
    @com.google.gson.annotations.SerializedName("verified_trade")
    private String verifiedTrade;
    @com.google.gson.annotations.SerializedName("verified_reason_url")
    private String verifiedReasonUrl;
    @com.google.gson.annotations.SerializedName("verified_source")
    private String verifiedSource;
    @com.google.gson.annotations.SerializedName("verified_source_url")
    private String verifiedSourceUrl;
    @com.google.gson.annotations.SerializedName("follow_me")
    private boolean followMe;
    @com.google.gson.annotations.SerializedName("online_status")
    private int onlineStatus;
    @com.google.gson.annotations.SerializedName("bi_followers_count")
    private int biFollowersCount;
    @com.google.gson.annotations.SerializedName("lang")
    private String lang;
    @com.google.gson.annotations.SerializedName("star")
    private int star;
    @com.google.gson.annotations.SerializedName("mbtype")
    private int mbtype;
    @com.google.gson.annotations.SerializedName("mbrank")
    private int mbrank;
    @com.google.gson.annotations.SerializedName("block_word")
    private int blockWord;
    @com.google.gson.annotations.SerializedName("block_app")
    private int blockApp;
    @com.google.gson.annotations.SerializedName("credit_score")
    private int creditScore;
    @com.google.gson.annotations.SerializedName("user_ability")
    private int userAbility;
    @com.google.gson.annotations.SerializedName("urank")
    private int urank;

    public void setId(long id) {
        this.id = id;
    }

    public void setIdstr(String idstr) {
        this.idstr = idstr;
    }

    public void setClassX(int classX) {
        this.classX = classX;
    }

    public void setScreenName(String screenName) {
        this.screenName = screenName;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public void setProfileImageUrl(String profileImageUrl) {
        this.profileImageUrl = profileImageUrl;
    }

    public void setProfileUrl(String profileUrl) {
        this.profileUrl = profileUrl;
    }

    public void setDomain(String domain) {
        this.domain = domain;
    }

    public void setWeihao(String weihao) {
        this.weihao = weihao;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void setFollowersCount(int followersCount) {
        this.followersCount = followersCount;
    }

    public void setFriendsCount(int friendsCount) {
        this.friendsCount = friendsCount;
    }

    public void setPagefriendsCount(int pagefriendsCount) {
        this.pagefriendsCount = pagefriendsCount;
    }

    public void setStatusesCount(int statusesCount) {
        this.statusesCount = statusesCount;
    }

    public void setFavouritesCount(int favouritesCount) {
        this.favouritesCount = favouritesCount;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public void setFollowing(boolean following) {
        this.following = following;
    }

    public void setAllowAllActMsg(boolean allowAllActMsg) {
        this.allowAllActMsg = allowAllActMsg;
    }

    public void setGeoEnabled(boolean geoEnabled) {
        this.geoEnabled = geoEnabled;
    }

    public void setVerified(boolean verified) {
        this.verified = verified;
    }

    public void setVerifiedType(int verifiedType) {
        this.verifiedType = verifiedType;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public void setStatus(StatusEntity status) {
        this.status = status;
    }

    public void setPtype(int ptype) {
        this.ptype = ptype;
    }

    public void setAllowAllComment(boolean allowAllComment) {
        this.allowAllComment = allowAllComment;
    }

    public void setAvatarLarge(String avatarLarge) {
        this.avatarLarge = avatarLarge;
    }

    public void setAvatarHd(String avatarHd) {
        this.avatarHd = avatarHd;
    }

    public void setVerifiedReason(String verifiedReason) {
        this.verifiedReason = verifiedReason;
    }

    public void setVerifiedTrade(String verifiedTrade) {
        this.verifiedTrade = verifiedTrade;
    }

    public void setVerifiedReasonUrl(String verifiedReasonUrl) {
        this.verifiedReasonUrl = verifiedReasonUrl;
    }

    public void setVerifiedSource(String verifiedSource) {
        this.verifiedSource = verifiedSource;
    }

    public void setVerifiedSourceUrl(String verifiedSourceUrl) {
        this.verifiedSourceUrl = verifiedSourceUrl;
    }

    public void setFollowMe(boolean followMe) {
        this.followMe = followMe;
    }

    public void setOnlineStatus(int onlineStatus) {
        this.onlineStatus = onlineStatus;
    }

    public void setBiFollowersCount(int biFollowersCount) {
        this.biFollowersCount = biFollowersCount;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    public void setStar(int star) {
        this.star = star;
    }

    public void setMbtype(int mbtype) {
        this.mbtype = mbtype;
    }

    public void setMbrank(int mbrank) {
        this.mbrank = mbrank;
    }

    public void setBlockWord(int blockWord) {
        this.blockWord = blockWord;
    }

    public void setBlockApp(int blockApp) {
        this.blockApp = blockApp;
    }

    public void setCreditScore(int creditScore) {
        this.creditScore = creditScore;
    }

    public void setUserAbility(int userAbility) {
        this.userAbility = userAbility;
    }

    public void setUrank(int urank) {
        this.urank = urank;
    }

    public long getId() {
        return id;
    }

    public String getIdstr() {
        return idstr;
    }

    public int getClassX() {
        return classX;
    }

    public String getScreenName() {
        return screenName;
    }

    public String getName() {
        return name;
    }

    public String getProvince() {
        return province;
    }

    public String getCity() {
        return city;
    }

    public String getLocation() {
        return location;
    }

    public String getDescription() {
        return description;
    }

    public String getUrl() {
        return url;
    }

    public String getProfileImageUrl() {
        return profileImageUrl;
    }

    public String getProfileUrl() {
        return profileUrl;
    }

    public String getDomain() {
        return domain;
    }

    public String getWeihao() {
        return weihao;
    }

    public String getGender() {
        return gender;
    }

    public int getFollowersCount() {
        return followersCount;
    }

    public int getFriendsCount() {
        return friendsCount;
    }

    public int getPagefriendsCount() {
        return pagefriendsCount;
    }

    public int getStatusesCount() {
        return statusesCount;
    }

    public int getFavouritesCount() {
        return favouritesCount;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public boolean isFollowing() {
        return following;
    }

    public boolean isAllowAllActMsg() {
        return allowAllActMsg;
    }

    public boolean isGeoEnabled() {
        return geoEnabled;
    }

    public boolean isVerified() {
        return verified;
    }

    public int getVerifiedType() {
        return verifiedType;
    }

    public String getRemark() {
        return remark;
    }

    public StatusEntity getStatus() {
        return status;
    }

    public int getPtype() {
        return ptype;
    }

    public boolean isAllowAllComment() {
        return allowAllComment;
    }

    public String getAvatarLarge() {
        return avatarLarge;
    }

    public String getAvatarHd() {
        return avatarHd;
    }

    public String getVerifiedReason() {
        return verifiedReason;
    }

    public String getVerifiedTrade() {
        return verifiedTrade;
    }

    public String getVerifiedReasonUrl() {
        return verifiedReasonUrl;
    }

    public String getVerifiedSource() {
        return verifiedSource;
    }

    public String getVerifiedSourceUrl() {
        return verifiedSourceUrl;
    }

    public boolean isFollowMe() {
        return followMe;
    }

    public int getOnlineStatus() {
        return onlineStatus;
    }

    public int getBiFollowersCount() {
        return biFollowersCount;
    }

    public String getLang() {
        return lang;
    }

    public int getStar() {
        return star;
    }

    public int getMbtype() {
        return mbtype;
    }

    public int getMbrank() {
        return mbrank;
    }

    public int getBlockWord() {
        return blockWord;
    }

    public int getBlockApp() {
        return blockApp;
    }

    public int getCreditScore() {
        return creditScore;
    }

    public int getUserAbility() {
        return userAbility;
    }

    public int getUrank() {
        return urank;
    }

    public static class StatusEntity {
        @com.google.gson.annotations.SerializedName("created_at")
        private String createdAt;
        @com.google.gson.annotations.SerializedName("id")
        private long id;
        @com.google.gson.annotations.SerializedName("mid")
        private String mid;
        @com.google.gson.annotations.SerializedName("idstr")
        private String idstr;
        @com.google.gson.annotations.SerializedName("text")
        private String text;
        @com.google.gson.annotations.SerializedName("source_allowclick")
        private int sourceAllowclick;
        @com.google.gson.annotations.SerializedName("source_type")
        private int sourceType;
        @com.google.gson.annotations.SerializedName("source")
        private String source;
        @com.google.gson.annotations.SerializedName("favorited")
        private boolean favorited;
        @com.google.gson.annotations.SerializedName("truncated")
        private boolean truncated;
        @com.google.gson.annotations.SerializedName("in_reply_to_status_id")
        private String inReplyToStatusId;
        @com.google.gson.annotations.SerializedName("in_reply_to_user_id")
        private String inReplyToUserId;
        @com.google.gson.annotations.SerializedName("in_reply_to_screen_name")
        private String inReplyToScreenName;
        @com.google.gson.annotations.SerializedName("geo")
        private Object geo;
        @com.google.gson.annotations.SerializedName("reposts_count")
        private int repostsCount;
        @com.google.gson.annotations.SerializedName("comments_count")
        private int commentsCount;
        @com.google.gson.annotations.SerializedName("attitudes_count")
        private int attitudesCount;
        @com.google.gson.annotations.SerializedName("isLongText")
        private boolean isLongText;
        @com.google.gson.annotations.SerializedName("mlevel")
        private int mlevel;
        /**
         * type : 0
         * list_id : 0
         */

        @com.google.gson.annotations.SerializedName("visible")
        private VisibleEntity visible;
        @com.google.gson.annotations.SerializedName("biz_feature")
        private int bizFeature;
        @com.google.gson.annotations.SerializedName("userType")
        private int userType;
        @com.google.gson.annotations.SerializedName("pic_urls")
        private List<?> picUrls;
        @com.google.gson.annotations.SerializedName("darwin_tags")
        private List<?> darwinTags;

        public void setCreatedAt(String createdAt) {
            this.createdAt = createdAt;
        }

        public void setId(long id) {
            this.id = id;
        }

        public void setMid(String mid) {
            this.mid = mid;
        }

        public void setIdstr(String idstr) {
            this.idstr = idstr;
        }

        public void setText(String text) {
            this.text = text;
        }

        public void setSourceAllowclick(int sourceAllowclick) {
            this.sourceAllowclick = sourceAllowclick;
        }

        public void setSourceType(int sourceType) {
            this.sourceType = sourceType;
        }

        public void setSource(String source) {
            this.source = source;
        }

        public void setFavorited(boolean favorited) {
            this.favorited = favorited;
        }

        public void setTruncated(boolean truncated) {
            this.truncated = truncated;
        }

        public void setInReplyToStatusId(String inReplyToStatusId) {
            this.inReplyToStatusId = inReplyToStatusId;
        }

        public void setInReplyToUserId(String inReplyToUserId) {
            this.inReplyToUserId = inReplyToUserId;
        }

        public void setInReplyToScreenName(String inReplyToScreenName) {
            this.inReplyToScreenName = inReplyToScreenName;
        }

        public void setGeo(Object geo) {
            this.geo = geo;
        }

        public void setRepostsCount(int repostsCount) {
            this.repostsCount = repostsCount;
        }

        public void setCommentsCount(int commentsCount) {
            this.commentsCount = commentsCount;
        }

        public void setAttitudesCount(int attitudesCount) {
            this.attitudesCount = attitudesCount;
        }

        public void setIsLongText(boolean isLongText) {
            this.isLongText = isLongText;
        }

        public void setMlevel(int mlevel) {
            this.mlevel = mlevel;
        }

        public void setVisible(VisibleEntity visible) {
            this.visible = visible;
        }

        public void setBizFeature(int bizFeature) {
            this.bizFeature = bizFeature;
        }

        public void setUserType(int userType) {
            this.userType = userType;
        }

        public void setPicUrls(List<?> picUrls) {
            this.picUrls = picUrls;
        }

        public void setDarwinTags(List<?> darwinTags) {
            this.darwinTags = darwinTags;
        }

        public String getCreatedAt() {
            return createdAt;
        }

        public long getId() {
            return id;
        }

        public String getMid() {
            return mid;
        }

        public String getIdstr() {
            return idstr;
        }

        public String getText() {
            return text;
        }

        public int getSourceAllowclick() {
            return sourceAllowclick;
        }

        public int getSourceType() {
            return sourceType;
        }

        public String getSource() {
            return source;
        }

        public boolean isFavorited() {
            return favorited;
        }

        public boolean isTruncated() {
            return truncated;
        }

        public String getInReplyToStatusId() {
            return inReplyToStatusId;
        }

        public String getInReplyToUserId() {
            return inReplyToUserId;
        }

        public String getInReplyToScreenName() {
            return inReplyToScreenName;
        }

        public Object getGeo() {
            return geo;
        }

        public int getRepostsCount() {
            return repostsCount;
        }

        public int getCommentsCount() {
            return commentsCount;
        }

        public int getAttitudesCount() {
            return attitudesCount;
        }

        public boolean isIsLongText() {
            return isLongText;
        }

        public int getMlevel() {
            return mlevel;
        }

        public VisibleEntity getVisible() {
            return visible;
        }

        public int getBizFeature() {
            return bizFeature;
        }

        public int getUserType() {
            return userType;
        }

        public List<?> getPicUrls() {
            return picUrls;
        }

        public List<?> getDarwinTags() {
            return darwinTags;
        }

        public static class VisibleEntity {
            @com.google.gson.annotations.SerializedName("type")
            private int type;
            @com.google.gson.annotations.SerializedName("list_id")
            private int listId;

            public void setType(int type) {
                this.type = type;
            }

            public void setListId(int listId) {
                this.listId = listId;
            }

            public int getType() {
                return type;
            }

            public int getListId() {
                return listId;
            }
        }
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeLong(this.id);
        dest.writeString(this.idstr);
        dest.writeInt(this.classX);
        dest.writeString(this.screenName);
        dest.writeString(this.name);
        dest.writeString(this.province);
        dest.writeString(this.city);
        dest.writeString(this.location);
        dest.writeString(this.description);
        dest.writeString(this.url);
        dest.writeString(this.profileImageUrl);
        dest.writeString(this.profileUrl);
        dest.writeString(this.domain);
        dest.writeString(this.weihao);
        dest.writeString(this.gender);
        dest.writeInt(this.followersCount);
        dest.writeInt(this.friendsCount);
        dest.writeInt(this.pagefriendsCount);
        dest.writeInt(this.statusesCount);
        dest.writeInt(this.favouritesCount);
        dest.writeString(this.createdAt);
        dest.writeByte(following ? (byte) 1 : (byte) 0);
        dest.writeByte(allowAllActMsg ? (byte) 1 : (byte) 0);
        dest.writeByte(geoEnabled ? (byte) 1 : (byte) 0);
        dest.writeByte(verified ? (byte) 1 : (byte) 0);
        dest.writeInt(this.verifiedType);
        dest.writeString(this.remark);
        dest.writeParcelable((Parcelable) this.status, flags);
        dest.writeInt(this.ptype);
        dest.writeByte(allowAllComment ? (byte) 1 : (byte) 0);
        dest.writeString(this.avatarLarge);
        dest.writeString(this.avatarHd);
        dest.writeString(this.verifiedReason);
        dest.writeString(this.verifiedTrade);
        dest.writeString(this.verifiedReasonUrl);
        dest.writeString(this.verifiedSource);
        dest.writeString(this.verifiedSourceUrl);
        dest.writeByte(followMe ? (byte) 1 : (byte) 0);
        dest.writeInt(this.onlineStatus);
        dest.writeInt(this.biFollowersCount);
        dest.writeString(this.lang);
        dest.writeInt(this.star);
        dest.writeInt(this.mbtype);
        dest.writeInt(this.mbrank);
        dest.writeInt(this.blockWord);
        dest.writeInt(this.blockApp);
        dest.writeInt(this.creditScore);
        dest.writeInt(this.userAbility);
        dest.writeInt(this.urank);
    }

    public User() {
    }

    protected User(Parcel in) {
        this.id = in.readLong();
        this.idstr = in.readString();
        this.classX = in.readInt();
        this.screenName = in.readString();
        this.name = in.readString();
        this.province = in.readString();
        this.city = in.readString();
        this.location = in.readString();
        this.description = in.readString();
        this.url = in.readString();
        this.profileImageUrl = in.readString();
        this.profileUrl = in.readString();
        this.domain = in.readString();
        this.weihao = in.readString();
        this.gender = in.readString();
        this.followersCount = in.readInt();
        this.friendsCount = in.readInt();
        this.pagefriendsCount = in.readInt();
        this.statusesCount = in.readInt();
        this.favouritesCount = in.readInt();
        this.createdAt = in.readString();
        this.following = in.readByte() != 0;
        this.allowAllActMsg = in.readByte() != 0;
        this.geoEnabled = in.readByte() != 0;
        this.verified = in.readByte() != 0;
        this.verifiedType = in.readInt();
        this.remark = in.readString();
        this.status = in.readParcelable(StatusEntity.class.getClassLoader());
        this.ptype = in.readInt();
        this.allowAllComment = in.readByte() != 0;
        this.avatarLarge = in.readString();
        this.avatarHd = in.readString();
        this.verifiedReason = in.readString();
        this.verifiedTrade = in.readString();
        this.verifiedReasonUrl = in.readString();
        this.verifiedSource = in.readString();
        this.verifiedSourceUrl = in.readString();
        this.followMe = in.readByte() != 0;
        this.onlineStatus = in.readInt();
        this.biFollowersCount = in.readInt();
        this.lang = in.readString();
        this.star = in.readInt();
        this.mbtype = in.readInt();
        this.mbrank = in.readInt();
        this.blockWord = in.readInt();
        this.blockApp = in.readInt();
        this.creditScore = in.readInt();
        this.userAbility = in.readInt();
        this.urank = in.readInt();
    }

    public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {
        public User createFromParcel(Parcel source) {
            return new User(source);
        }

        public User[] newArray(int size) {
            return new User[size];
        }
    };
}
